<?php  
/*
Контроллер модуля. 

Унаследован от шаблона контроллеров модулей 
Вызывает свою модель 
Вызывает свое представление

Генерит хтмл или ошибку 

  
 
[!] добавил метод router()
[!] $this-> view->update_photo_form_action = '/'.MODUL.'/actionUpdateTeachers'; // [!] так не пашет - нужен рефакторинг

*/ 
 
// контроллер вызывает модель, затем представление 
// и формирует output, а также массив входных данных для виджетов array('widget_descriptor'=>array('param_name'=>param_value)) 
 
 
class TeacherModul extends BasicModulController implements BasicModulControllerInterface {
// контроллер модуля

  

   // private $widget_inputdata_arr; // перенести в интерфейс BasicModulController

    function __construct($registry = null){
      
      $this->registry = $registry; 
      
      if($this->getURIarg(1)){
        //echo $this->getURIarg(1);
      }
      
       parent::__construct();
       
      // die(var_dump($this->action));
        
      //var_dump($this->action);
      if(isset($this->registry) AND ($this->registry->get('virtual_modul_index')) != '')
         $this->life_modul_index = $this->registry->get('virtual_modul_index'); 
      elseif(isset($this->registry) AND ($this->registry->get('modul_index')) != '')   
        $this->life_modul_index = $this->registry->get('modul_index'); 
       
      // $this->life_modul_index // 'teacher' 
      $this->modul_index = $this->registry->get('modul_index'); // 'AbTeacherout'
       
      // виджеты 
      $this->widget_enter_data = array();
      $this->widget_enter_data['widget'] = array('1'=>'a'); //var_dump($this->widget_enter_data);
      
      // инициализация модели
      $this->model = new Teacher; // [!] подставлять переменную с именем модуля
      
      // инициализация представления
      $class_name = $this->modul_index . "View";
      
      $ModulView = new $class_name; // [!] подставлять переменную с именем можудя
      $this->global_view = $ModulView->getView(); // глобальное представление
      $this->view = $ModulView; // представление модуля
      
      // установка переменных, полученных из модели
      //$this->view->Set('asd',1234); 
      
      self::$instance = $this;
      
      // генерация html
      // [!] закоментить после запуска Фабрики
      //$this->html = $this->view->render();
      
      // Меню слева       
      // TODO вынести в ролителя
      $this->sections_arr = $this->getSections();  
      
      if(is_array($this->sections_arr))
        $this->view->Set('sections',$this->sections_arr);
      else   
        $this->view->Set('sections',null);
      
      $left_menu = $this->view->Get('inc_navigator.tpl');
       
      $this->global_view->Set('left_menu',$left_menu);
      
    } // -- __construct
    
    
    function getHtml(){
        return $this->html;
    }
    
    // [!] сделать, чтобы рендерился шаблон модуля и шаблон отдельно главный
    // попробовать взять смарти из реестра или создать второй объект
     
    
    
    
    
    public static function getInstance(){
    // [!] метод обязателен для каждого модуля
        if (!isset(self::$instance)) {
            $className = __CLASS__;
            self::$instance = new $className;
        }

        return self::$instance;
    } // --
    
    static function action(){
        //die(var_dump(__CLASS__));
        $obj = static::getInstance();
          
        $method = $obj->action;
        $obj->$method();  
        
        //die(var_dump($obj->action));
    } // --
    
    static function router($section_id){
         
        $modul = static::getInstance();
        
        switch($section_id){
            case 803: $modul->showTeachers();
            break;
            
            default:
            break;
        }
    } // --
    
 
   
    // -------- Teacher ----------
    function actionTeacherBasic(){ 
        //var_dump($this->basic_act_param);
        //var_dump($this->getURIarg(1));
        
        $action = 'litsom-k-litsu';
        $this-> view->Set('action',$action); 
        $this->  global_view->Set('navhigh',$action); 
        
        $this-> view->Set('action','Basic');
        
        $teachers = $this->model->getTeachers();
        
        if(!is_array($teachers )){
          $teachers = false;          
        }
        $this-> view->Set('teachers',$teachers);
        
        
        #
        $editLink = '';
        if(User::isAdmin()) $editLink = '/Teacher/CreateTeacher';
        
        $this-> view->Set('editLink',$editLink);
        
        #
        $this->html =  $this->view->render();
    } // --
    
    function actionTeacherShowTeacher(){  //header("Location:/Teacher");
    // точка входа
        $action = 'litsom-k-litsu';
        $this-> view->Set('action',$action); 
        $this->  global_view->Set('navhigh',$action); 
        
        $teacher = false;
        $editLink = ''; 
        
        $teachers_id = $this->getURIarg(2);  
        
        if(!User::isAdmin()) $editLink = $this->model->getEditTeacherLink($teachers_id);  //TODO
        
        $teacher = $this->model->getTeacher($teachers_id); 
        
        $this->  view->Set('editLink',$editLink);
        $this->  view->Set('teacher',$teacher);
        
        $this->html =  $this->view->render('ShowTeacher.tpl');       
        
    } // --
        
    
      
    function actionTeacherCreateTeacher(){ 
    // точка входа 
        
        if(!User::isAdmin()) return null;  
         
        //$this-> view->Set('action','CreateTeacher'); 
        $this-> view->Set('submitButtonName','Создать'); 
        $action = 'litsom-k-litsu';
        $this-> view->Set('action',$action); 
        $this->  global_view->Set('navhigh',$action);
        //$this->  global_view->Set('navhigh','map'); 
        
        $this->addJs('upload_files_ajax.js', $get_script_from_standard_dir = true); 
        $this->addJs('jquery.form.js', $get_script_from_standard_dir = true); 
        $this->addJs('jquery.blockUI.js', $get_script_from_standard_dir = true); 
        
        $teachers = false;
        $teachers = $this->model->getTeachers();
        $this-> view->Set('teachers',$teachers); //fb($teachers);
        $this-> view->Set('update_teachers_form_action','/'.MODUL_INDEX.'/UpdateTeachers'); 
         
        
        $this->html =  $this->view->render('CreateTeacher.tpl');
        
    } // --
    
    function actionTeacherUpdateTeachers(){
    // точка входа 
        
        if(!User::isAdmin()) return null; 
         
        if(!isset($_POST['teachers'])) return null;
        if(!is_array($_POST['teachers'])) return null;
        
        // TODO валидация
        foreach($_POST['teachers'] as $teachers_id => $value){
      
            if(isset($value['delete'])){  
              $this->model->deleteTeacher($value['teachers_id']);               
            } else { 
            /*
            $value['name'];
            $value['second_name'];
            $value['surname'];
            $value['email'];
            $value['phone'];
            $value['small_info'];
            $value['info'];
            $value['extra_info'];
            */
            
            // TODO move to model
            $q = "UPDATE `teachers` SET `name` = '{$value['name']}',
                                        `second_name` = '{$value['second_name']}',
                                        `surname` = '{$value['surname']}',
                                        `email` = '{$value['email']}',
                                        `phone` = '{$value['phone']}',
                                        `small_info` = '{$value['small_info']}',
                                        `info` = '{$value['info']}',
                                        `extra_info` = '{$value['extra_info']}'
                  WHERE teachers_id = {$value['teachers_id']}  ";
            $r = mysql_query($q);
            }
            header("Location:/".MODUL."/CreateTeacher");

        }
        
        //fb($_POST);
    } // --
    
    
    
    
    function addTeacher(){ 
        if(!isset($_POST['teacher'])) return null;       
        
        //var_dump($_FILES['photo']['name'][0]);
        $condition = '';
        $photo = " `photo` =   ";
        $mess = 'ok';
        
        foreach($_POST['teacher'] as $option => $value){
        // name second_name surname email phone small_info info extra_info
            $condition .= " $option = '$value', ";
            
        }
        
        
       
       
       if(isset($_FILES['photo']['name'])){
       // name type tmp_name error size
          $c = count($_FILES['photo']['name']);
          $photo .= "'";
          
          for($i=0; $i<$c; $i++){
              $old_name = $_FILES['photo']['tmp_name'][$i];
              $new_name = md5($old_name . date("m.d.y")) . ".jpg";
              $new_name_sm = md5($old_name . date("m.d.y")) . "_sm.jpg";
              $photo .=  $new_name ;
              if(($i+1) < $c) $photo .= ";";
              
              $path = $_SERVER['DOCUMENT_ROOT'] . "../Image/teacher/$new_name";
              $path_sm = $_SERVER['DOCUMENT_ROOT'] . "../Image/teacher/$new_name_sm";
              
              $res_sm   = $this->model->imgCropAndResize($old_name, $path_sm, 450, 300);
              $res = $this->model->imgCropAndResize($old_name, $path, 600);
              
              if($res_sm == -100)     $mess = 'картинку нужно уменьшить';
                
              
          }
          $photo .= "'";
          
       } else $photo .= "' '"; 
         
      $q = "INSERT INTO `teachers` SET  $condition $photo, refresh_date	= '" . date("Y-m-d") . "'"; 
       $r = mysql_query($q);
       if(!$r) return -1;
       
      if($mess != 'ok')       
        fb($mess);
      else
        header("Location:/Teacher");
       
        
    } // --
    
    
     
    
    // -----------------------
    function showTeachers(){
    // вывод карточек учителей
      
        $action = 'litsom-k-litsu';
        $this-> view->Set('action',$action); 
        $this->  global_view->Set('navhigh',$action); 
    
        if($this->getURIarg(2) == 'edit' AND User::isAdmin())
        // управление разделом - вызов метода либо редирект на другую точку входа
         
          //$this->CreateTeacher(); 
          header("Location:/teacher/CreateTeacher");
        else {
          $this-> view->Set('action','Basic');
          
          $teachers = $this->model->getTeachers();
          
          if(is_array($teachers )){
            $this-> view->Set('teachers',$teachers);
          }
        
          $this->html =  $this->view->render();
        }  
    } // --
    
    
    
    
    
    
    
    
    
    
    
}

    
 
?>